package com.gxy.learn.design.principle.dependence_Inversion_principle;

/**
 * @description:
 * 依赖倒转原则   这个是开闭原则的具体实现，针对接口编程，依赖于抽象而不依赖于具体
 * 高层模块不应该依赖低层模块，两者都应该依赖其抽象；抽象不应该依赖细节，细节应该依赖抽象。简单的说就是要求对抽象进行编程，
 * 不要对实现进行编程，这样就降低了客户与实现模块间的轉合。
 * 例子：组装计算机
 * @author: gaoxueyong
 * @Date: 2022/11/6 13:56
 */
public class DependenceInversionPrincipleClient {
    public static void main(String[] args) {
//        1、创建计算机
        HardDisk hardDisk = new XiJieHardDisk();
        Cpu cpu = new IntelCpu();
        Memory memory = new KingstonMemory();
//        2、组装计算机
        Computer computer = new Computer(hardDisk,cpu,memory);
//        3、运行
        computer.run();
    }
}
